package com.doudou.collection.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doudou.collection.orm.entity.Blog;
import com.doudou.collection.orm.vo.BlogCategoriesVO;
import com.doudou.collection.orm.vo.BlogDetailVO;
import com.doudou.collection.orm.vo.BlogSimpleVO;
import com.doudou.collection.orm.vo.ContentIndexVO;
import org.springframework.stereotype.Repository;

import java.util.List;
/**
 * @ClassName BlogMapper<br>
 * @Description 博客文章Mapper类<br>
 * @Author 薛思唯<br>
 * @Date 2023/6/22 23:02<br>
 * @Version 1.0<br>
 */
@Repository
public interface BlogMapper extends BaseMapper<Blog> {

    /*发布文章功能*/
    int insert(Blog blog);

    /*根据文章id删除文章*/
    int delete(Long id);

    /*根据id获取文章具体信息,每查询一次增加一个浏览量*/
    BlogDetailVO detailById(Long id);

    /*增加文章浏览量,每查询一次增加一个浏览量*/
    void updateViewCountById(Long id);


    /*增加文章评论量,每评论一条增加一个评论量*/
    void updateCommentCount(Long blogId);


    /*增加文章点赞数量,每点赞一次增加一个获得赞的数量*/
    void updateAddLikedCount(Long blogId);

    /*减少文章点赞数量,每取消点赞一次减少一个获得赞的数量*/
    void updateDecreaseLikedCount(Long blogId);


    /*增加文章收藏数量,每收藏一次增加一个获得收藏的数量*/
    void updateAddCollectCount(Long blogId);


    /*减少文章收藏数量,每取消收藏一次减少一个获得收藏的数量*/
    void updateDecreaseCollectCount(Long blogId);


    /*获取所有文章类别*/
    List<BlogCategoriesVO> selectAllCategories();


    /*根据分类id获取文章列表功能*/
    List<ContentIndexVO> selectByCategoriesId(Integer categoriesId);

    /*显示推荐所有文章*/
    List<ContentIndexVO> recommendedBlog();


    /*在文章详情页获取该作者的其他文章*/
    List<BlogSimpleVO> selectOthersByUserId(Long userId);



    /*获取热门文章*/
    List<BlogSimpleVO> selectHot();



    /*通过关键字搜索文章的功能*/
    List<ContentIndexVO> queryListBySearch(String wd);


    /*查询自己发布的所有文章*/
    List<ContentIndexVO> selectSelfBlogsById(Long id);

    /*查询自己点赞的所有文章*/
    List<ContentIndexVO> selectLikeBlogsAllById(Long id);

    /*查询自己收藏的所有文章*/
    List<ContentIndexVO> selectCollectBlogsAllById(Long id);

    int updateBlogLikedFromUserLiked(Long blogId);


}